package final_wearebatman_model;

// a kapcsolót megvalósító osztály
public class Switch implements IhasOutput {

    private Output output;
    private Wire wire;
    private int state;
    private String name;

    //konstruktor
    public Switch(String name) {
        this.name = name;
        this.output = new Output();
        this.state = 0;
    }

    //a tényleges működést implementáló metódus
    public void operate() {
        this.output.setData(this.state);       

        this.wire.operate();
    }

    //getter az outputra
    public int getOutputData(int pin) {
        return this.output.getData();
    }

    //setter az outputra
    public void setOutputData(int pin, int data) {
        this.output.setData(data);
    }

    //vezeték inputjának összekötése
    public void connectWireOutput(int pin, Wire wire) {
        this.wire = wire;
    }

    //kapcsoló állapotának beállítása
    public void setState(int data) {
        this.state = data;        
    }

    //folyamatosan be/ki legyen kapcsolva
    public void toggleState() {
        this.state = this.state==0?1:0;        
    }

    //név lekérése
    public String getName() {
        return this.name;
    }

    //számlálók nullázása
    public void resetCounter() {

    }

    //végső állapot
    public String getFinalState() {
        return Integer.toString(this.output.getData());
    }
} 